﻿using System;
using System.Collections.Generic;
using UnityEngine;

// 语言管理者
public class LanguageManager: MonoBehaviour {
    // 语言种类
    public enum Language {
        CHINESE,    // 汉语
        ENGISH      // 英语
    }

    private const string FILE_NAME_EN = "language/En";          // 英语文件
    private const string FILE_NAME_zh_CN = "language/zh_CN";    // 汉语文件
    private readonly string[] LINE_SEPARATOR = { "\r\n" };      // 行分隔符
    private const char WORD_SEPARATOR = '=';                    // 词句分隔符
    public Language language;                                   // 当前语言
    private static Dictionary<string, string> sDictionary;      // 字典

    /**
     * 唤醒。
     */
    private void Awake() {
        // 初始化成员
        language = Language.CHINESE;
        sDictionary = new Dictionary<string, string>();

        // 读取语言文件
        TextAsset textAsset = null;
        if (language == Language.CHINESE) {
            textAsset = Resources.Load<TextAsset>(FILE_NAME_zh_CN);
        } else if (language == Language.ENGISH) {
            textAsset = Resources.Load<TextAsset>(FILE_NAME_EN);
        }
        if (textAsset == null) {
            return;
        }

        // 获取文件中的每一行
        string[] lines = textAsset.text.Split(LINE_SEPARATOR, StringSplitOptions.RemoveEmptyEntries);
        if (lines == null) {
            return;
        }

        // 将每行拆分成键值对，保存到字典中
        string[] pairs;
        foreach (string line in lines) {
            pairs = line.Split(WORD_SEPARATOR);
            sDictionary.Add(pairs[0], pairs[1]);
        }
    }

    /**
     * 获取文本 id 对应的字符串。
     * @param textId    文本 id
     * @return 字符串
     */
    public static string Get(string textId) {
        bool result = sDictionary.TryGetValue(textId, out string value);
        if (!result) {
            return textId;
        }
        return value;
    }
}
